package com.ruoyi.electricity.mapper;

import com.ruoyi.electricity.domain.DTO.DataStatusCount;
import com.ruoyi.electricity.domain.DTO.StatusCount;
import com.ruoyi.electricity.domain.TDataGatewaySystem;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;

import java.util.Date;
import java.util.List;


/**
 * 网关数据系统Mapper接口
 *
 * @author wu
 * @date 2023-10-28
 */
public interface TDataGatewaySystemMapper {
    /**
     * 查询网关数据系统
     *
     * @param id 网关数据系统ID
     * @return 网关数据系统
     */
    public TDataGatewaySystem selectTDataGatewaySystemById(Long id);

    /**
     * 查询网关数据系统列表
     *
     * @param tDataGatewaySystem 网关数据系统
     * @return 网关数据系统集合
     */
    public List<TDataGatewaySystem> selectTDataGatewaySystemList(TDataGatewaySystem tDataGatewaySystem);

    /**
     * 新增网关数据系统
     *
     * @param tDataGatewaySystem 网关数据系统
     * @return 结果
     */
    public int insertTDataGatewaySystem(TDataGatewaySystem tDataGatewaySystem);

    /**
     * 修改网关数据系统
     *
     * @param tDataGatewaySystem 网关数据系统
     * @return 结果
     */
    public int updateTDataGatewaySystem(TDataGatewaySystem tDataGatewaySystem);

    /**
     * 删除网关数据系统
     *
     * @param id 网关数据系统ID
     * @return 结果
     */
    public int deleteTDataGatewaySystemById(Long id);

    /**
     * 批量删除网关数据系统
     *
     * @param ids 需要删除的数据ID
     * @return 结果
     */
    public int deleteTDataGatewaySystemByIds(Long[] ids);

    @Select("SELECT dataStatus, COUNT(*) AS count FROM t_data_gateway_system WHERE dataTime >= #{startTime} AND dataTime <= #{endTime} GROUP BY dataStatus")
    List<DataStatusCount> getDataStatusCount(@Param("startTime") Date startTime, @Param("endTime") Date endTime);

    @Select("SELECT HiddenSate , COUNT(*) AS count FROM t_data_gateway_system WHERE dataTime >= #{startTime} AND dataTime <= #{endTime} GROUP BY HiddenSate")
    List<StatusCount> getStatusCount(@Param("startTime") Date startTime, @Param("endTime") Date endTime);

    @Select("SELECT DISTINCT dataStatus FROM t_data_gateway_system")
    List<String> selectAllDataStatus();
    @Select("SELECT DISTINCT HiddenSate FROM t_data_gateway_system")
    List<String> selectAllStatus();
}
